//
//  Sunrise_BLE_STIDCardReader.h
//  Sunrise_BLE_STIDCardReader
//
//  Created by Chenfan on 8/27/15.
//  Copyright (c) 2015 Sunrise. All rights reserved.
//

#import <Foundation/Foundation.h>

FOUNDATION_EXPORT double SRIDCardReaderVersionNumber;

FOUNDATION_EXPORT const unsigned char SRIDCardReaderVersionString[];

@interface SRMyPeripheral : NSObject
@property(nonatomic,retain) NSString *advName;
@property(nonatomic,retain) NSString *mac;
@end

@interface SRIDReadCardInfo : NSObject
@property(nonatomic,retain) NSString *retCode;
@property(nonatomic,retain) NSString *ICCID;
@property(nonatomic,retain) NSString *CARDTYPE;
@end

@protocol SRIDCardReaderDelegate;
@interface SRIDCardReader : NSObject;
@property (assign) id<SRIDCardReaderDelegate> delegate;

+ (id)instance;

+ (id)instanceWithManagerAccount:(NSString *)acc password:(NSString *) pwd key:(NSString *)key;

+ (id)instanceWithManagerIP:(NSString *)ip port:(int)port account:(NSString *)acc password:(NSString *) pwd key:(NSString *)key;
/*
 功能：实例方法，设置使用的服务器IP和端口。
 参数：serVerIp 服务器IP地址
 Port    服务器端口号
 返回值：无
 */
- (void)setServerIP:(NSString*)serverIP andPort:(int)port;
/*
 功能：实例方法，设置用于身份证解码的蓝牙设备。
 参数：periperalHandle 通过代理方法didUpdatePeripheralList返回的蓝牙设备对象
 返回值：成功返回 YES，失败返回NO
 */
- (BOOL)setLisentPeripheral:(SRMyPeripheral* )periperalHandle;
/*
 功能：实例方法，开始执行读取身份证
 参数：无
 返回值：无
 */
- (void)startScaleCard;
/*
 功能：实例方法，重新扫描周边的蓝牙设备，并通过代理方法didUpdatePeripheralList返回周边的蓝牙设备对象。
 参数：无
 返回值：无
 */
- (void)refreshDeviceList;

/*
 功能：实例方法，停止扫描周边的蓝牙设备
 参数：无
 返回值：无
 */
- (void)stopRefreshDeviceList;

/*
 功能：实例方法，读取ICCID
 参数：cardType:卡类型 1代表2G卡，2代表3G卡，3代表4G卡
 返回值：IDReadCardInfo对象
 */
- (SRIDReadCardInfo*)readCardInfo:(NSString *)cardType;

/*
 功能：写入IMSI号
 参数：IMIS号
 返回值：写入结果代码
 */
- (int)writeIMSI:(NSString *)imsi;

/*
 功能：写入短信中心号和电话号码
 参数：短信中心号
 返回值：写入结果代码
 */
- (int)writeMSGNumber:(NSString *)sms number:(Byte)num;

/*
 功能：总部写卡函数
 参数：option：写入短信中心号，iccid：白卡卡号，imsi：写入的imsi号，number：写入的电话号码
 返回值：写卡结果
 */
- (NSString *)insertCard:(NSString *)option iccid:(NSString *)iccid imsi:(NSString *)imsi number:(NSString *)custNum;

/*
 功能：设置读取身份证时传输的业务数据
 参数：JSON字符串
 返回值：设置结果，数据格式错误返回NO，数据格式正确返回YES
 */
-(BOOL)setBusinessData:(NSString *)dataStr;

/*
 功能：蓝牙连接状态查询,返回值:YES 已连接  NO 未连接
 */
-(BOOL)connectStatus;

/*
 功能：刷新解密服务列表
 */
- (int)refreshServerList;

@end

@protocol SRIDCardReaderDelegate <NSObject>

@required

/*
 功能：代理方法，当扫描到周围的蓝牙设备时，通过该代理获得代表各个蓝牙设备的对象数组。
 参数：peripherals 蓝牙设备对象数组
 返回值: 无
 */
- (void)didUpdatePeripheralList:(NSArray *)peripherals;
/*
 
 功能：代理方法，读取身份证失败时可以通过这个代理方法获取失败的蓝牙对象和原因。
 参数：peripheral 代表蓝牙设备的对象
 error 描述失败的具体原因
 返回值：无
 */
- (void)failedBack:(SRMyPeripheral*)peripheral withError:(NSError *)error;
/*
 功能： 代理方法，读取身份证成功时可以通过这个代理方法获取身份证的文本信息和照片信息。
 参数：peripheral代表蓝牙设备的对象
 data 如果data是NSDictionary类型，则里面包含的信息是文本信息，具体获取各字段信息见下表；如果data是NSData类型，则里面包含的是照片的二进制数据流
 返回值：无
 */
- (void)successBack:(SRMyPeripheral*)peripheral withData:(id)data;
@end

